/***************************************************************************** 
* 
* File Name : main.c
* 
* Description: main 
* 
* Copyright (c) 2014 Winner Micro Electronic Design Co., Ltd. 
* All rights reserved. 
* 
* Author : dave
* 
* Date : 2014-6-14
*****************************************************************************/ 
#include "wm_include.h"
//#include "user_uart.h"
#include "CloudLog.h"
#define TAG			"MyTag"

int CloudLogGetTime(CLOG_TIME* logtim){						// 获取本地时间及系统运行tick 必须在用户的主程序之中实现函数功能
	return tls_os_get_time() * 2;							// W800的tick为2ms
}
#define    DEMO_TASK_SIZE      2048
static OS_STK 			DemoTaskStk[DEMO_TASK_SIZE];
void demo_console_task(void *sdata){
	while (1){
		tls_os_time_delay(1000 / 2);
		// Fixer日志主要用于跟踪动态变化的数据，固定位置显示
		uint32_t tick = CloudLogGetTime(NULL);
		uint32_t minute = tick / (60 * 1000); 
		tick = tick % (60 * 1000); 
		CLOGF(TAG, "Fixer日志 %02d:%02d.%03d",minute, tick/1000, tick%1000);	
		// 简易风格  输出："F 0018 MyTag Fixer日志 00:00.018 (18)" 
		// 键值对风格输出："ll:F&lt:Rml4ZXLml6Xlv5cgMDA6MDEuMDU2&dt:IAQ=&an:MyWifi&ta:MyTag&tc:ut"
		// CloudLog  显示："Fixer日志 19:13.173"
	}
}

void UserMain(void)
{
	printf("\n user task \n");								
	// 因为不符合日志的规则，显示为Lost [11:10:39][L][COM5][user task]
	
	CLOGE(TAG, "这是一条Error日志");						
	// 简易风格  输出："E 0000 MyTag 这是一条Error日志" 
	// 键值对风格输出："ll:E&lt:6L+Z5piv5LiA5p2hRXJyb3Lml6Xlv5c=&dt:FAA=&an:MyWifi&ta:MyTag&tc:ut"
	// CloudLog  显示："[11:10:39][E][MyTag][这是一条Error日志]【计时开始】"

	CLOGW(TAG, "这是一条Warn日志");							
	// 简易风格  输出："W 0001 MyTag 这是一条Warn日志" 
	// 键值对风格输出："ll:W&lt:6L+Z5piv5LiA5p2hV2FybuaXpeW/lw==&dt:GgA=&an:MyWifi&ta:MyTag&tc:ut"
	// CloudLog  显示："[11:10:39][W][MyTag][这是一条Warn日志]【用时1ms】"

	CLOGI(TAG, "这是一条Info日志");							
	// 简易风格  输出："I 0004 MyTag 这是一条Info日志" 
	// 键值对风格输出："ll:I&lt:6L+Z5piv5LiA5p2hSW5mb+aXpeW/lw==&dt:IAA=&an:MyWifi&ta:MyTag&tc:ut"
	// CloudLog  显示："[11:10:39][I][MyTag][这是一条Info日志]【用时3ms】"

	CLOGD(TAG, "这是一条Debug日志");						
	// 简易风格  输出："D 0008 MyTag 这是一条Debug日志" 
	// 键值对风格输出："ll:D&lt:6L+Z5piv5LiA5p2hRGVidWfml6Xlv5c=&dt:KAA=&an:MyWifi&ta:MyTag&tc:ut"
	// CloudLog  显示："[11:10:39][D][MyTag][这是一条Debug日志]【用时4ms】"
	
	// Buffer日志可以将数组阵列显示到CloudLog.exe及保存到文件，在电脑直接跟踪数组阵列的内容	
	uint8_t array[16];
	for (int index = 0; index < sizeof(array); index++) {
		array[index] = (uint8_t)index;
	}
	CLOGB(TAG, array, sizeof(array), "这是一条Buffer日志");		
	// 简易风格  输出："B 0011 MyTag 这是一条Buffer日志 16[000102030405060708090a0b0c0d0e0f]" 
	// 键值对风格输出："ll:B&lt:6L+Z5piv5LiA5p2hQnVmZmVy5pel5b+X&lb:AAECAwQFBgcICQoLDA0ODw==&dt:NAA=&an:MyWifi&ta:MyTag&tc:ut"
	// CloudLog  显示："[11:10:39][B][MyTag][这是一条Buffer日志]【用时3ms】"
	// 				   "0001020304050607 08090a0b0c0d0e0f" 
																
    tls_os_task_create(NULL, NULL,
                       demo_console_task,
                       NULL,
                       (void *)DemoTaskStk,          /* task's stack start address */
                       DEMO_TASK_SIZE * sizeof(u32), /* task's stack size, unit:byte */
                       DEMO_TASK_PRIO,
                       0);
	
//    uart_demo(115200,-1,-1);
#if DEMO_CONSOLE
	CreateDemoTask();
#endif
//用户自己的task
}

